/*
 * Title: 铁轨（Rails）
 * Author: Yuanshun L
 * Created : 21-otc-2021
 */


#include<cstdio>
#include<iostream>
#include<vector>
#include<stack>
using namespace std;

#define MAXN 1001

int permutation[MAXN];



int main(){

    freopen("data.in","r",stdin);
    freopen("data.out","w",stdout);

    int n,first=0;
    while(cin>>n && n!=0){
        // 扫描输入的排列
        if(first) cout<<endl;
        else first++;

        while(cin >> permutation[0] && permutation[0]){
            // 接收一种排列输入
            for(int i=1;i<n;i++){
                cin>>permutation[i];
            }

            stack<int> middle; // 列出中转栈

            int l=0,r=1; // l是指向排列中正在匹配数字的指针
                         // r是等待车厢排列的首个数字
            bool ok = true;   // 是否成功匹配的标志
            for(;l<n;){
                if(r==permutation[l]){ // 与等待列首车厢匹对
                    l++;r++;
                }
                else if(!middle.empty()  // 与栈顶匹对
                        && middle.top()==permutation[l]){
                    l++;
                    middle.pop();
                }
                else if(r<=n){// 还有等待车厢
                    middle.push(r++);
                }
                else{
                    ok = false; break;
                }
            }
            if(ok) cout<<"Yes"<<endl;
            else cout<<"No"<<endl;
        }

    }


    return 0;
}
